数据类型
GBase 8s支持的数据类型如下:
类型分类 | 数据类型 | 备注 |
---|---|---|
数值型 | NUMBER | |
DECIMAL/DEC | ||
INTEGER/INT | ||
DOUBLE PRECISION | ||
BIGINT | ||
INT8 | ||
REAL | ||
SMALLINT | ||
字符型 | CHAR | |
NCHAR | ||
VARCHAR | ||
NVARCHAR | ||
布尔型 | BOOLEAN | |
时间类型 | DATE | |
TIMESTAMP[(precision) | ||
INTERVAL YEAR[(precision)] TO MONTH |
CHAR和VARCHAR空白填充差异
在本例中,CHAR变量和VARCHAR变量的最大大小为10个字符。每个变量接收一个5字符的值,其中一个为空格。
赋值给CHAR变量的值是空白填充到10个字符,您无法判断结果值中的6个尾随空格中哪一个是原始值。分配给VARCHAR变量的值没有更改,您可以看到它有一个末尾空格。
CREATE OR REPLACE PROCEDURE p_2_1 AS
first_name CHAR(10);
last_name VARCHAR(10);
BEGIN
first_name := 'John ';
last_name := 'Chen ';
DBMS_OUTPUT.PUT_LINE('*' || first_name || '*');
DBMS_OUTPUT.PUT_LINE('*' || last_name || '*');
END;
/
--Result:
--*John *
--*Chen *
输出BOOLEAN值
在本例中,如果参数的值为NULL,该过程接受一个 BOOLEAN参数并使用一个CASE语句来输出Unknown值。如果是TRUE,则为Yes,如果为FALSE,则为No。
CREATE OR REPLACE PROCEDURE print_boolean(b boolean)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE (
CASE
WHEN b IS NULL THEN 'Unknown'
WHEN b THEN 'Yes'
WHEN NOT b THEN 'No'
END
);
END;
/
call print_boolean(TRUE);
call print_boolean(FALSE);
call print_boolean(NULL);
--Result:
--Yes
--No
--Unknown
SQL语句通过BOOLEAN函数调用PL/SQL函数
在本例中,SQL语句调用具有BOOLEAN参数的PL/SQL函数。
CREATE OR REPLACE FUNCTION f(x BOOLEAN, y INT)
RETURN INT AS
BEGIN
IF x THEN
RETURN y;
ELSE
RETURN 2*y;
END IF;
END;
/
CREATE OR REPLACE PROCEDURE p_2_3 AS
name varchar(30);
b BOOLEAN := TRUE;
BEGIN
SELECT last_name INTO name
FROM employees
WHERE employee_id = f(b, 100);
DBMS_OUTPUT.PUT_LINE(name);
b := FALSE;
SELECT last_name INTO name
FROM employees
WHERE employee_id = f(b, 100);
DBMS_OUTPUT.PUT_LINE(name);
END;
/
--Result:
--King
--Whalen